#include "modelcontrol.h"





ModelControl::ModelControl(QWidget *parent) : QWidget(parent)
{

}

ModelControl::ModelControl(const QString &Name, const QJsonObject &functionDetails, QWidget *parent)
    : QWidget(parent)
{
    QGroupBox *groupBox = new QGroupBox("模式控制", this);
    groupBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
     // 调用 createModelControl 进行初始化
    createModelControl(groupBox, functionDetails);

    // 创建 QVBoxLayout 并设置到当前 QWidget
    QVBoxLayout *layout = new QVBoxLayout(this);
    layout->addWidget(groupBox); // 将 groupBox 添加到布局
    layout->setContentsMargins(0, 0, 0, 0); // 可选，去除边距
    qDebug() << "测试是否进入ModelControl";

    // 让 ModelControl 使用这个布局
    setLayout(layout);
}

void ModelControl::createModelControl(QGroupBox *groupBox, const QJsonObject &functionDetails)
{
    QVBoxLayout *mainLayout = new QVBoxLayout();
    groupBox->setLayout(mainLayout);

    // 创建用于放置模式选择按钮控件的窗口
    QWidget *Widget = new QWidget(groupBox);
    QHBoxLayout *Layout = new QHBoxLayout(Widget);
    Widget->setLayout(Layout);
    // 设置 Widget 的缩放策略为 Expanding
    Widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

    // 获取 Details 中的 "radiobutton" 数组
    QJsonObject Details = functionDetails["Parameters"].toObject();
    QJsonArray radioButtonArray = Details["radiobutton"].toArray();
    qDebug() << "RadioButton Array: " << radioButtonArray;

    // 遍历数组并为每个值创建 QRadioButton
    for (const auto& item : radioButtonArray) {
        QString buttonName = item.toString();
        if(buttonName == "Sync") buttonName = "同步模式";
        else if(buttonName == "moverUp")buttonName = "上mover独立控制";
        else if(buttonName == "moverDown")buttonName = "下mover独立控制";

        // 根据名称动态创建按钮
        QRadioButton *radioButton = new QRadioButton(buttonName, Widget);
        radioButton->setChecked(false);
        Layout->addWidget(radioButton);

        // 连接信号和槽函数
        connect(radioButton, &QRadioButton::toggled, this, &ModelControl::onRadioButtonToggled);
    }

    mainLayout->addWidget(Widget);  // 放置按钮控件的窗口
}

void ModelControl::onRadioButtonToggled(bool checked)
{
    QRadioButton *radioButton = qobject_cast<QRadioButton *>(sender());
    if (!radioButton) return;  // 确保 sender() 返回的是 QRadioButton 对象

    QString buttonText = radioButton->text();
    if (checked)
    {
        qDebug() << buttonText << " selected!";
        // 处理相应模式选中的逻辑
        if (buttonText == "同步模式") {
            qDebug() << "选中：" << buttonText << Qt::endl;
            // 处理同步模式选中的逻辑
            // 比如启动同步模式的操作
//            startSyncMode();
        }
        else if (buttonText == "上mover独立控制") {
            qDebug() << "选中：" << buttonText << Qt::endl;
            // 处理上 mover 独立控制选中的逻辑
            // 比如启动上 mover 控制
//            startMoverUpControl();
        }
        else if (buttonText == "下mover独立控制") {
            qDebug() << "选中：" << buttonText << Qt::endl;
            // 处理下 mover 独立控制选中的逻辑
            // 比如启动下 mover 控制
//            startMoverDownControl();
        }
    }
    else
    {
        qDebug() << buttonText << " deselected!";
        // 处理相应模式取消选中的逻辑
        if (buttonText == "同步模式") {
             qDebug() << "取消：" << buttonText << Qt::endl;
             // 处理同步模式取消选中的逻辑
//             stopSyncMode();
        }
        else if (buttonText == "上mover独立控制") {
            qDebug() << "取消：" << buttonText << Qt::endl;
            // 处理上 mover 独立控制取消选中的逻辑
//            stopMoverUpControl();
        }
        else if (buttonText == "下mover独立控制") {
            qDebug() << "取消：" << buttonText << Qt::endl;
            // 处理下 mover 独立控制取消选中的逻辑
//            stopMoverDownControl();
        }
    }
}

//// 启动同步模式
//void ModelControl::startSyncMode()
//{
//    qDebug() << "启动同步模式...";
//    // 执行同步模式的具体操作
//}

//// 启动上 mover 独立控制
//void ModelControl::startMoverUpControl()
//{
//    qDebug() << "启动上 mover 独立控制...";
//    // 执行上 mover 独立控制的具体操作
//}

//// 启动下 mover 独立控制
//void ModelControl::startMoverDownControl()
//{
//    qDebug() << "启动下 mover 独立控制...";
//    // 执行下 mover 独立控制的具体操作
//}

//// 停止同步模式
//void ModelControl::stopSyncMode()
//{
//    qDebug() << "停止同步模式...";
//    // 执行停止同步模式的操作
//}

//// 停止上 mover 独立控制
//void ModelControl::stopMoverUpControl()
//{
//    qDebug() << "停止上 mover 独立控制...";
//    // 执行停止上 mover 独立控制的操作
//}

//// 停止下 mover 独立控制
//void ModelControl::stopMoverDownControl()
//{
//    qDebug() << "停止下 mover 独立控制...";
//    // 执行停止下 mover 独立控制的操作
//}
